\section{心得体会}
这次的系统开发工具实验做下来，我感觉收获特别大。在做这个实验之前，我基本是使用图形界面的，用Linux也主要是开个浏览器、用个IDE，对于命令行操作感到不感冒，当然和主要是觉得命令行界面不够直观要记很多的指令。

一开始练习命令行的时候，确实有点不适应。就拿那个pgrep和pkill来说吧，以前我想结束一个后台进程，都是先用ps aux | grep慢慢找，再把那一长串PID复制粘贴过来执行kill，又慢又容易出错。实验里让我直接用pkill -af "sleep 10000"，一条命令精准干掉目标，那一刻我才真正感觉到，原来命令行可以这么优雅和高效。

后面写pidwait那个Bash脚本，挑战就更大了。这不光是写几行代码，而是真的要动脑筋去想一个“策略”。kill -0那个用法真是很好，我之前从来不知道还有这种操作，用一个不发信号的命令去检查进程是否存在，这个思路让我大开眼界。感觉以前学的都是零散的命令，这个练习第一次让我把它们组合起来，解决一个实际的需求，真正开始有了“写脚本”的感觉。再加上后来学会了ssh的快捷配置和tmux分屏，现在在宿舍连服务器写代码，感觉就跟在用自己的电脑一样方便，还能同时开好几个窗口干不同的事，效率高多了。

Python部分，虽然语法之前学过，但这次是第一次用它来做这么完整的“应用”。特别是那个命令行的To-Do List，它把我之前学的函数、面向对象、文件操作这些零散的知识点全都串起来了。最大的感触就是数据持久化那块，以前我写的Python小程序，程序一关就什么数据都没了。这次用了JSON文件来保存任务列表，我的小程序第一次有了“记忆”，关掉再打开，上次添加的任务还在。这个从“无状态”到“有状态”的转变，让我觉得特别有成就感，感觉自己做的东西终于像个真正的软件了。

此外和我之前学过的C++，java等计算机语言相比，我很深刻的理解了为什么python有着这么广大的用户群体。简洁直白的语法，让它比c++，java更接近自然语言，而在自然计算上更是有着c++和java难以企及的优势。另一个感受就是python种类繁多的库，我们在任何领域的库都能在python中找到。

最后那个图像处理的部分，最有意思，但也最折腾人。看着Pillow、Numpy几行代码就把图片变清晰、或者像变魔术一样拆分成红绿蓝三个通道，真的觉得编程特别酷。但快乐总是短暂的（笑），马上就遇到了各种环境问题。报告里写的那个Pgmagick安装失败，提示Magick++ not found，我当时就卡在这儿了。一开始还以为是pip的问题，搞了半天才明白，原来Pgmagick只是一个Python的“接口”，它真正干活需要一个叫GraphicsMagick的底层C++库来支持。我得先去安装那个库，才能装好这个Python包。

这个排错的过程，比看书学理论印象深刻多了。它让我切身体会到，我们平时用的很多库都不是凭空变出来的，它们之间有复杂的依赖关系。写代码不只是调用API那么简单，能搞定这些环境和依赖问题才是真本事。以后再遇到类似的报错，我心里就有底了，不会再那么慌，知道该怎么一步步去分析了。

总的来说，这次实验让我从一个只会用IDE的小白，开始向一个懂得如何跟操作系统打交道、如何用脚本解决问题的“准程序员”转变。感觉自己对计算机的理解又深了一层！